package org.yeruyi.common.ui.viewholder;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import butterknife.ButterKnife;

/**
 * Author：yeruyi
 * Date：2017/3/12
 * Version：v1.0
 * Scope:
 * 2018年3月12日 封装ViewHolder的抽象类，包含对应布局，以及view和Id的对应数组
 */

public abstract class RoyBaseViewHolder<T> {

    private View mRootView;
    private T mData;

    public RoyBaseViewHolder(Context context, ViewGroup viewGroup) {
        //1.加载布局文件
        //2.在initView方法中初始化控件
        if (initViewLayout() == 0){
            return;
        }
        mRootView = LayoutInflater.from(context).inflate(initViewLayout(),viewGroup,false);
        ButterKnife.bind(this,mRootView);
        //3.打标记
        mRootView.setTag(this);
    }

    public abstract int initViewLayout();

    public abstract void updateView(T data);

    public View getRootView() {
        return mRootView;
    }

    /**
     * ListView中存在viewHolder更换View的情况，因此暴露方法
     *
     * @param newView 新视图
     */
    public void setRootView(View newView) {
        mRootView = newView;
    }

    public T getData() {
        return mData;
    }

    public void setData(T data) {
        this.mData = data;
        updateView(data);
    }

}


